/**
 * author：shinion
 * date：2019-11-04
 * 功能：
 *      基本数据功能插件，用于开始时从数据库中载入基本数据，并保存在本地缓存中
 * 
 *
 *      功能列表：
 *              1.获取并保存报警基本信息数据
 *              2.获取并保存报警处理信息数据
 *              3.获取并保存basicData表中的基本数据
 */

var BasicData = {};
BasicData.debug = true;
BasicData.webPath = "";



//////////////////////////////////////////////////////////////////////////初始化方法
// 初始化方法
BasicData.initBasicData = function (webPath) {
    this.webPath = webPath;
    this.getAlarmSourcesData();
    this.getProcessedRemarkData();
    this.getBasicData();

}


//////////////////////////////////////////////////////////////////////////获取基础数据

//获取报警来源类型基本数据
BasicData.getAlarmSourcesData = function () {
    var me = this;
    //定时器，获取报警来源和报警类型数据
    $(document).oneTime("1s", "getAlarmSourceData", function () {
        // console.log("定时方法开始");
        try {
            //获取报警数据
            $.ajax({
                type: "post",//请求方式
                url: me.webPath + "/activeSafeAlarm/getAlarmSources.action",
                data: null,
                contentType: "application/json;charset=utf-8",
                success: function (data) {
                    //处理数据
                    me.disposeData(data);
                    //获取数值，赋值
                    window.localStorage.setItem("alarmSourceList", JSON.stringify(data));
                    // console.log("获取报警来源和报警类型信息数据成功");
                }
            });
        } catch (error) {
            console.error("获取报警来源和报警类型信息数据错误" + error);
        }
    });
}
//处理数据，给数据加上索引
BasicData.disposeData = function (data) {
    try {
        var length = data.length;
        if (length > 0) {
            for (var i = 0; i < length; i++) {
                data[i].index = i;
            }
        }
    } catch (error) {
        console.error("处理数据错误:" + error);
    }
}


//获取报警处理方式描述数据
BasicData.getProcessedRemarkData = function () {
    var me = this;
    //定时器，获取报警处理方式和处理状态信息
    $(document).oneTime("1300ms", "getProcessedData", function () {
        // console.log("定时方法开始");
        try {
            //获取数据
            $.ajax({
                type: "post",//请求方式
                url: me.webPath + "/activeSafeAlarm/getAlarmProcessedRemarkData.action",//请求地址
                data: null,
                contentType: "application/json;charset=utf-8",
                success: function (data) {
                    //获取数值，赋值
                    // console.log(data);
                    window.localStorage.setItem("alarmProcessedData", JSON.stringify(data));
                    // console.log("获取报警处理信息数据成功");//测试输出

                }
            });
        } catch (error) {
            console.error("获取报警处理信息数据错误" + error);
        }
    });
}



//获取基础表basicData中的基础数据
BasicData.getBasicData = function () {
    let me = this;
    let url = this.webPath + "/basicSlctAction/basicSelectData.action";
    let param = {
        queryId: "basicData.selectBasicData",
    };
    $(document).oneTime("1600ms", "getProcessedData", function () {
        Utility.getAjaxData(url, JSON.stringify(param), function (data) {
            // me.outDebug("接收到基本信息数据：", data);
            if (data.success) {
                if (data.data && data.data.length > 0) {
                    // me.outDebug("有新的信息数据:" , data.data);
                    me.formatBasicdata(data.data);
                }
            } else {
                DataUtil.outError("获取基础表数据失败：" + data.message);
            }
        });
    });
}
//解析基本数据
BasicData.formatBasicdata = function(data){
    if(data.length > 0){
        try {
            let list = [];//列表，临时缓存parent信息
            let basicDataMap = {};
            for(let i=0 ; i<data.length ; i++){
                let item = data[i];
                if(list.indexOf(item.parent) < 0){
                    list.push(item.parent);
                    basicDataMap[item.parent] = [];
                }
                let temp = basicDataMap[item.parent];
                if(!DataUtil.isDefined(temp)){
                    temp.push({
                        name:item.name,
                        value:item.code,
                        meta:item.meta,
                        remark:item.remark,
                        owner:item.owner
                    });
                }
            }
            window.localStorage.setItem("basicDataMap", JSON.stringify(basicDataMap));
            // this.outDebug("basicDataMap：",basicDataMap);
        } catch (error) {
            DataUtil.outError("解析基本数据失败：" + error);
        }
    }
}





///////////////////////////////////////////////////////////////////////////公用方法

//输出调试信息
BasicData.outDebug = function (msg, data) {
    if (this.debug == true) {
        DataUtil.outDebug(msg, data);
    }
}
